﻿/**
 *
 * @file FITKAssInstance.h
 * @brief 装配实例
 * @author LiBaojun (libaojunqd@foxmail.com)
 * @date 2024-03-22
 *
 */
#ifndef _FITKINSTANCEM4_H___
#define _FITKINSTANCEM4_H___

#include "FITKAbstractAssInstance.h"
#include <array>

namespace Interface
{
    /**
     * @brief 装配实例
     * @author LiBaojun (libaojunqd@foxmail.com)
     * @date 2024-03-22
     */
    class FITKInerfaceModelAPI FITKAssemblyInstanceM4 : public  FITKAbstractAssInstance
    {
        FITKCLASS(Interface, FITKAssemblyInstanceM4);
    public:
        /**
         * @brief Construct a new FITKAssemblyInstance object
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-03-22
         */
        explicit FITKAssemblyInstanceM4() = default;
        /**
         * @brief Destroy the FITKAssemblyInstance object
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-03-22
         */
        virtual ~FITKAssemblyInstanceM4() = default;


        /**
         * @brief 设置转换矩阵
         * @param[i]  row            行号 0-3
         * @param[i]  col            列号 0-3
         * @param[i]  value          数值
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-03-22
         */
        void setTransformMatrix(const int row, const int col, const double value);
        /**
         * @brief 获取变换矩阵值
         * @param[i]  row            行号 0-3
         * @param[i]  col            列号 0-3
         * @return double
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-03-22
         */
        double getTransformMatrix(const int row, const int col) const;

    private:

        /**
         * @brief 变换矩阵
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-03-22
         */
        std::array<std::array<double, 4>, 4> _transformMatrix{};
    };
}




#endif
